package com.yecheng.yeaiagent.model;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Data
@EqualsAndHashCode(callSuper = true)
public abstract class ReActAgent extends BaseAgent {

    /**
     * 智能体思考
     * @return 是否继续思考
     */
    public abstract boolean think();

    /**
     * 智能体行动
     * @return 行动结果
     */
    public abstract String act();

    /**
     * 智能体执行一步
     * @return 执行结果
     */
    @Override
    public String step() {
        try {
            //思考
            boolean shouldAct = think();
            //行动
            if (!shouldAct){
                return "思考结果：不行动";
            }
            //返回结果
            return act();
        } catch (Exception e) {
            //记录异常日志
            log.error("智能体执行一步异常", e);
            e.printStackTrace();
            return "步骤执行失败: " + e.getMessage();
        }
    }
}
